package edu.ihs.lhpy.Interceptor;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

import edu.ihs.lhpy.domain.User;

public class CheckPrivilegeInterceptor extends AbstractInterceptor {
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		//权限过滤器
		
		//获取访问的url，并且去掉工程的前缀
		
		String namespace = invocation.getProxy().getNamespace();
		String actionName = invocation.getProxy().getActionName();
		
		
		//访问的后台
		if(!actionName.startsWith("indexAction_")){
			String url = namespace+actionName;
			if(url.startsWith("/")){
				url = url.substring(1);
			}
			User user =  (User)ActionContext.getContext().getSession().get("user");
			//如果未登录用户
			if(user == null){
				//如果是在登录，则放行
				if(url.startsWith("userAction_login")){//userAction_login,userAction_loginUI
					return invocation.invoke(); 
				//如果不是去登录，则转到登录界面
				}else{
					return "loginUI";
				}
			}else{//如果已经登录
				//如果有权限
				if(user.hasPrivilegeByUrl(url)){
					//放行
					return invocation.invoke();
				}
				//如果没有权限
				else{
					//提示页面
					return "noPrivilegeError";
				}
			}
		}else{
			return invocation.invoke();
		}
		
	}

}
